package com.chen.blue.converter.business;

import com.chen.blue.domain.dto.business.ContestPersonInfoDto;
import com.chen.blue.domain.dto.business.update.ContestPersonInfoDtoEdit;
import com.chen.blue.domain.model.business.ContestPersonInfoModel;
import com.chen.blue.domain.vo.business.ContestPersonInfoVo;
import org.springframework.cglib.beans.BeanCopier;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * Created By CLT On 2024/5/26.
 */
@SuppressWarnings("all")
public abstract class ContestPersonInfoConverter {

    private static final BeanCopier modelToVo = BeanCopier.create(ContestPersonInfoModel.class, ContestPersonInfoVo.class, false);
    private static final BeanCopier dtoToModel = BeanCopier.create(ContestPersonInfoDto.class, ContestPersonInfoModel.class, false);
    private static final BeanCopier dtoEditToModel = BeanCopier.create(ContestPersonInfoDtoEdit.class, ContestPersonInfoModel.class, false);

    /**
     * model->vo
     *
     * @param model
     * @return
     */
    public static ContestPersonInfoVo modelToVo(ContestPersonInfoModel model) {
        if (Objects.isNull(model)) {
            return null;
        }
        ContestPersonInfoVo contestPersonInfoVo = new ContestPersonInfoVo();
        modelToVo.copy(model, contestPersonInfoVo, null);
        return contestPersonInfoVo;
    }

    /**
     * model->volist
     *
     * @param modelList
     * @return
     */
    public static List<ContestPersonInfoVo> modelToVoList(List<ContestPersonInfoModel> modelList) {
        if (modelList.size() == 0) {
            return null;
        }

        List<ContestPersonInfoVo> contestPersonInfoVoList = new ArrayList<>();
        for (ContestPersonInfoModel contestPersonInfoModel : modelList) {
            contestPersonInfoVoList.add(modelToVo(contestPersonInfoModel));
        }

        return contestPersonInfoVoList;

    }

    /**
     * dto->model
     *
     * @param contestPersonInfoDto
     * @return
     */
    public static ContestPersonInfoModel dtoToModel(ContestPersonInfoDto contestPersonInfoDto) {

        if (Objects.isNull(contestPersonInfoDto)) {
            return null;
        }

        ContestPersonInfoModel contestPersonInfoModel = new ContestPersonInfoModel();
        dtoToModel.copy(contestPersonInfoDto, contestPersonInfoModel, null);
        return contestPersonInfoModel;

    }

    /**
     * dtoList->modelList
     *
     * @param contestPersonInfoDtoList
     * @return
     */
    public static List<ContestPersonInfoModel> dtoListToModelList(List<ContestPersonInfoDto> contestPersonInfoDtoList) {

        if (contestPersonInfoDtoList.size() == 0) {
            return null;
        }

        List<ContestPersonInfoModel> contestPersonInfoModelList = new ArrayList<>();
        for (ContestPersonInfoDto contestPersonInfoDto : contestPersonInfoDtoList) {
            contestPersonInfoModelList.add(dtoToModel(contestPersonInfoDto));
        }

        return contestPersonInfoModelList;

    }

    /**
     * editDto->model
     *
     * @param contestPersonInfoDtoEdit
     * @return
     */
    public static ContestPersonInfoModel dtoEditToModel(ContestPersonInfoDtoEdit contestPersonInfoDtoEdit) {

        if (Objects.isNull(contestPersonInfoDtoEdit)) {
            return null;
        }

        ContestPersonInfoModel contestPersonInfoModel = new ContestPersonInfoModel();
        dtoEditToModel.copy(contestPersonInfoDtoEdit, contestPersonInfoModel, null);
        return contestPersonInfoModel;

    }

}
